<template>
	<view class="mine-setting-account-changephone">
		<view class="mine-setting-account-changephone-number">
			<view class="" v-if="info.mobile">
				当前绑定的手机号
			</view>
			<view class="" style="font-size: 32rpx;color: #2A2D34;margin-top: 30rpx;">
				<!-- 18396726288 -->
				{{ info.mobile }}
			</view>
		</view>
		<view class="mine-setting-account-changephone-list">
			<view class="mine-setting-account-changephone-list-item">
				<input type="text" v-model="mobile" @blur="setPhone" maxlength="11"
					:placeholder="info.mobile ? '请输入新手机号' : '请输入手机号'" />
			</view>
			<view class="mine-setting-account-changephone-list-item u-flex">
				<input type="text" v-model="code" placeholder="请输入验证码" style="flex: 1;">
				<view class="public-btn public-btn-color" style="width: 180rpx;" @click="getCode">
					{{ hint }}
				</view>
			</view>
		</view>
		<view class="public-btn public-btn-color" style="width: 686rpx;margin-top: 60rpx;">
			{{ info.mobile ? '确定修改手机号码' : '确定绑定手机号码' }}
		</view>
	</view>
</template>

<script>
	//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
	export default {
		// 组件名称
		name: 'demo',
		// 组件参数 接收来自父组件的数据
		props: {},
		// 局部注册的组件,import引入的组件需要注入到对象中才能使用
		components: {},
		// 组件状态值
		data() {
			return {
				info: {},
				second: 60,
				cutdown: false,
				hint: '获取验证码',
				mobile: '',
				code: ''
			}
		},
		// 计算属性
		computed: {},
		// 侦听器
		watch: {},
		// 组件方法
		methods: {
			getInfo() {
				this.$http('user.info').then(res => {
					console.log(res)
					this.info = res.data
					if (!this.info.mobile) {
						uni.setNavigationBarTitle({
							title: '绑定手机号'
						})
					}
					// this.$utils.setCache('userinfo', JSON.stringify(res.data))
				})
			},
			setPhone() {
				// var reg = /^1(3|4|5|6|7|8|9)\d{9}$/
				var reg = /^(?:(?:\+|00)86)?1\d{10}$/
				if (reg.test(this.mobile)) {
					return true
				} else {
					this.$utils.toast('手机号格式错误')
					return false
				}
			},
			submit() {
				if (this.mobile == '') {
					this.$utils.toast('请输入手机号')
					return false
				}
				if (!this.setPhone()) {
					return false
				}
				if (this.code == '') {
					this.$utils.toast('请输入验证码')
					return false
				}
				this.$http('user.BindMobile', {
					mobile: this.mobile,
					code: this.code
				}).then(res => {
					console.log(res)
				})
			},
			getCode() {
				var _t = this
				if (this.mobile == '') {
					uni.showToast({
						title: '请填写手机号',
						duration: 1500,
						icon: 'none'
					});
					return;
				}
				console.log(_t.cutdown)
				if (_t.cutdown == false) {
					// 获取验证码接口待定
					_t.$http('user.info', {
						phone: _t.mobile,
					}).then(res => {
						if (res.code == 200) {
							if (_t.cutdown == false) {
								_t.cutdown = true
							}
						}
						_t.countDown()
						uni.showToast({
							title: res.msg,
							duration: 1500,
							icon: 'none'
						});
					})
				}
				console.log('获取验证码')
			},
			countDown() {
				if (this.cutdown == true) {
					this.setInt = setInterval(() => {
						this.second--
						this.hint = `${this.second}秒` //后重新发送
						console.log(this.second)
						if (this.second == 0) {
							clearInterval(this.setInt)
							this.hint = '获取验证码' //
							this.second = 60;
							this.cutdown = false;
						}
					}, 1000)
				}
			},
		},
		// 以下是生命周期钩子   注：没用到的钩子请自行删除
		/**
		 * 在实例初始化之后，组件属性计算之前，如data属性等
		 */
		beforeCreate() {},
		/**
		 * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
		 */
		created() {
			this.getInfo()
		},
		/**
		 * 在挂载开始之前被调用：相关的 render 函数首次被调用。
		 */
		beforeMount() {},
		/**
		 * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
		 * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
		 */
		mounted() {},
		/**
		 * 数据更新时调用，发生在虚拟 DOM 重新渲染和打补丁之前。
		 * 你可以在这个钩子中进一步地更改状态，这不会触发附加的重渲染过程。
		 */
		beforeUpdate() {},
		/**
		 * 由于数据更改导致的虚拟 DOM 重新渲染和打补丁，在这之后会调用该钩子。
		 * 当这个钩子被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。
		 */
		updated() {},
		/**
		 * keep-alive 组件激活时调用。 仅针对keep-alive 组件有效
		 */
		activated() {},
		/**
		 * keep-alive 组件停用时调用。 仅针对keep-alive 组件有效
		 */
		deactivated() {},
		/**
		 * 实例销毁之前调用。在这一步，实例仍然完全可用。
		 */
		beforeDestroy() {},
		/**
		 * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
		 * 所有的事件监听器会被移除，所有的子实例也会被销毁。
		 */
		destroyed() {}
	}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--使用了scoped属性之后，父组件的style样式将不会渗透到子组件中，-->
<!--然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响，-->
<style scoped lang="scss">
	.mine-setting-account-changephone {
		padding: 0 32rpx;

		&-number {
			font-size: 28rpx;
			font-family: PingFang SC-Medium, PingFang SC;
			color: #898D98;
			text-align: center;
			padding: 60rpx 0;
		}

		&-list {
			&-item {
				height: 80rpx;
				background: #F6F8FA;
				border-radius: 46rpx;
				margin-top: 32rpx;

				input {
					width: 100%;
					height: 80rpx;
					line-height: 80rpx;
					padding: 0 32rpx;
					font-size: 28rpx;
					font-family: PingFang SC-Medium, PingFang SC;
					font-weight: 500;
					// color: #898D98;
				}
			}
		}
	}
</style>